Data storage devices are used to access digital data in a fast and efficient manner. With the proliferation of data storage devices being employed in consumer electronics devices, it is now not unusual for a remote host to access different data within a data storage device in completely different ways. Generally, two types of data can be categorized as being either normal computer data or audio/visual (A/V) data.
Normal computer data is accessed in a more traditional way, whereby the content of the data itself is essential to successfully executing the computer processes, tracking the processes, and reporting results of the processes. For this reason, each bit of normal computer data is potentially critical to the operational flow of the computer process.
On the other hand, A/V data relates to computer readable information that when executed produces audio signals and/or video signals through a speaker or a monitor. The performance with which this type of a sequential stream of a large volume of data can be read as a single command is fundamentally more important than its bit-by-bit accuracy. That is, if some of the A/V data is in error, the error can usually be passed on to the host without noticeable corruption of the A/V signal, at least in comparison to the delays that would otherwise occur were the A/V data scrutinized the same as normal data. Because of its nature A/V data is sequential data, such that by comparison normal data is thus sometimes referred to as “random data.”
It is becoming prevalent that the host must be capable of accessing both random data and sequential data within the same storage space. Write caching is generally associated with temporarily receiving data from host access commands into a buffer and then optimally scheduling the actual transfer of the data from or to the storage device. Because sequential data is presented in a format already suited for optimal transfer, write caching is usually not necessary for host access commands associated with sequential data. However, write caching is an advantageous way of increasing the data transfer rate for host access commands associated with random data. Intermingling both types of data in the same buffer can be problematic, likely resulting in bottlenecking the ultimate transfers of random data and unnecessarily fragmenting sequential data threads. What is needed is a straightforward way of buffering a mixture of both random and sequential data that optimizes the overall data transfer efficiency of the blend. It is to these improvements that the embodiments of the present invention are directed.